[Duvida] Programa Verificar CPF

1. [Duvida] Programa Verificar CPF

charles
charles messias

(usa Outra)

Enviado em 28/03/2012 - 00:31h

Olá pessoal estou fazendo um Programinha em C que o professor da faculdade passou.
Ja fiz o Algoritmo e está funcionando certo o problema que o professor não passou como faço para ler todos os números em uma única linha e depois passar para as variáveis. tentei jogar em um vetor e estava dando erro. alguem ai sabe alguma forma? abaixo o codigo que criei.


#include <stdio.h>
#include <stdlib.h>

int main()
{
int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,total,modulo;

printf("-------------------------------------------------\n");
printf("----------------- Verifica CPF ------------------\n");
printf("-------------------------------------------------\n");

printf("\n\nDigite os 11 numeros do seu cpf CPF : ");
scanf("%d",& n1);
scanf("%d",& n2);
scanf("%d",& n3);
scanf("%d",& n4);
scanf("%d",& n5);
scanf("%d",& n6);
scanf("%d",& n7);
scanf("%d",& n8);
scanf("%d",& n9);

total = ((n1 * 10)+(n2 * 9)+(n3 * 8)+(n4 * 7 )+ (n5 * 6) + (n6 *5)+(n7 * 4) + (n8 * 3)+ (n9 * 2));
modulo = (total % 11);

if(modulo < 2 )
{
n10 = 0 ;
} else
{

n10 = (11 - modulo);
}

total = 0 ;
modulo = 0;

total = ((n1 * 11)+(10 * n2)+(9 * n3)+(n4 * 8 )+ (7 * n5) + (6 * n6)+(5 * n7) + (4 * n8)+ (n9 * 3)+(n10 * 2));
modulo = (total % 11);



if(modulo < 2 )
{
n11 = 0 ;
}else
{
n11 = (11 - modulo);
}

printf("\nn10 : %d",n10);
printf("\nn11 : %d \n\n",n11);

return 0;

}





  


2. Re: [Duvida] Programa Verificar CPF

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 28/03/2012 - 07:29h

Faça ler os números em um vetor de char, depois faça um laço pra converter cada índice do vetor em um inteiro. Aí é só mandar fazer a verificação.

Lembre-se de que o último elemento do vetor é /0 (ou barra invertida, não lembro) pra indicar o fim do mesmo.


3. programa

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/03/2012 - 07:40h

#include <stdio.h>

int main()
{
char cpf[12];
int icpf[12];
int i,somador=0,digito1,result1,result2,digito2,valor;

printf("Digite o cpf: ");
scanf(" %s",cpf);

//Efetua a conversao de array de char para um array de int.
for(i=0;i<11;i++)
{
icpf[i]=cpf[i]-48;
}

//PRIMEIRO DIGITO.

for(i=0;i<9;i++)
{
somador+=icpf[i]*(10-i);
}

result1=somador%11;

if( (result1==0) || (result1==1) )
{
digito1=0;
}

else
{
digito1 = 11-result1;
}

//SEGUNDO DIGITO.

somador=0;

for(i=0;i<10;i++)
{
somador+=icpf[i]*(11-i);
}

valor=(somador/11)*11;
result2=somador-valor;

if( (result2==0) || (result2==1) )
{
digito2=0;
}

else
{
digito2=11-result2;
}

//RESULTADOS DA VALIDACAO.

if((digito1==icpf[9]) && (digito2==icpf[10]))
{
printf("\nCPF VALIDADO.\n");
}
else
{
printf("Problema com os digitos.\n");
}
return 0;
}


4. Re: [Duvida] Programa Verificar CPF

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 28/03/2012 - 07:42h

O que é isso, Jiraya, deixa o cara desenvolver seu raciocínio, sem dar códigos prontos. Não é assim que se aprende programação.


5. Re: [Duvida] Programa Verificar CPF

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/03/2012 - 07:48h

desculpa.. só queria ajudar para ele verificar


6. Re: [Duvida] Programa Verificar CPF

charles
charles messias

(usa Outra)

Enviado em 28/03/2012 - 07:57h

gostei da solução do jiraya eu estava etntando converter usando a função "atoi" por isso estava dando erro.
vou tentar fazer igual o Jiraya jogar de um vetor para o outro usando minha logica vlw!! Jiraya e Rei Astro ;D



7. Por que usar uma char para guardar numero ?

lucas
newlost

(usa Ubuntu)

Enviado em 12/04/2014 - 09:38h

rei_astro escreveu:

O que é isso, Jiraya, deixa o cara desenvolver seu raciocínio, sem dar códigos prontos. Não é assim que se aprende programação.


bom dia/tarde/noite - queria saber porque o senhor Jiray - usou uma verto de char para guarda inteiros ?



8. Re: [Duvida] Programa Verificar CPF

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 12/04/2014 - 10:18h

newlost escreveu:

rei_astro escreveu:

O que é isso, Jiraya, deixa o cara desenvolver seu raciocínio, sem dar códigos prontos. Não é assim que se aprende programação.


bom dia/tarde/noite - queria saber porque o senhor Jiray - usou uma verto de char para guarda inteiros ?


Simples, ele fez uma conversão de char para int a partir do código ASCII. Veja:

int a;
char b = '0';
a = b-48;
printf("%d",a);

O resultado será o inteiro 0.

Conclusão: Os códigos ASCII de 48 a 57 são os numerais. Então é só tirar 48 de qualquer variável char que represente um dígito que terá o resultado em inteiro. E sim você pode fazer cálculos numéricos com variáveis char, porque elas guardam os códigos ASCII, que são inteiros. Se duvida, tente imprimir o char '0' como inteiro:

char a = '0';
printf("%d",a);

Vai imprimir 48.

Abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts